#ifndef _BIIFunctions_h
#define _BiiFunctions_h

#include "BIITypes.h"

#ifdef __cplusplus
extern "C" {
#endif

int	WINAPI BII_Calibrate_Finger_Detection(unsigned int reserved_one, unsigned int reserved_two, int async);
int WINAPI BII_Capture_DownSampled_Image(BII_Raw *image);
int WINAPI BII_Capture_DownSampled_ImageEx(BII_Raw *image, int *extended, int extended_size);
int WINAPI BII_Capture_Raw_Image(BII_Raw *image, int start_row, int start_col, int num_rows, int num_cols);
int WINAPI BII_Capture_Opti_Raw_Image(BII_Raw *image, int start_row, int start_col, int num_rows, int num_cols);
int WINAPI BII_Check_Template(unsigned int id, int index);
int WINAPI BII_Close_PC_Comm();
int WINAPI BII_Current_Port();
int WINAPI BII_Enroll(unsigned int TemplateID, int *quality, int *content, int async);
int WINAPI BII_Enroll_And_Transfer(unsigned int TemplateID, BII_Template *the_template, int *quality, int *content);
int WINAPI BII_Enroll_And_Transfer_Search(unsigned int TemplateID, BII_Template *the_template, int *quality, int *content);
int WINAPI BII_Erase_Templates(unsigned int *template_id_list, int *template_index_list, int number_of_templates, int async);
int WINAPI BII_Finish_FPREnroll(int *quality, int *content, int async);
int WINAPI BII_Finish_FPREnroll_Transfer(BII_Template *the_template, int *quality, int *content);
int WINAPI BII_Finish_FPREnroll_Transfer_Search(BII_Template *the_template, int *quality, int *content);
int WINAPI BII_Finish_FPRIdentify(unsigned int *TemplateID, unsigned int *Index, unsigned int *Reserved, int *score, int async);
int WINAPI BII_Finish_FPRVerify(int *score, int num_templates, int async);
int WINAPI BII_Finish_FPRVerify_Template(int *score, int async);
int WINAPI BII_Full_Version(char *dll_version, char *algorithm_version, char *kernel_version, char *pic_version);
int WINAPI BII_Get_Auto_Finger_Detect_State(BII_AUTO_FDETECT *fdetect_state);
int WINAPI BII_Get_Current_NetID();
int WINAPI BII_Get_Flash_Block(unsigned int* buffer, int offset, int num_words);
int WINAPI BII_Get_Global_Thresh();
int WINAPI BII_Get_Host_Port_Type();
int WINAPI BII_Get_LED_Table(BII_LED_Table *led_table);
int WINAPI BII_Get_Max_NTemplates();
int WINAPI BII_Get_Net_ID();
int WINAPI BII_Get_Num_Templates();
int WINAPI BII_Get_PC_Baud_Rate();
int WINAPI BII_Get_Port_Comm_Params(int port, int *baud_rate, int *stop_bits);
int WINAPI BII_Get_Port_Comm_ParamsEx(int port, int *baud_rate, int *stop_bits, BII_Flow_Control_Struct *flow_control);
int WINAPI BII_Get_Port_Enable(BII_Port_Enable_Struct *value);
int WINAPI BII_Get_Sensor_Parameters(unsigned int *discharge_time_level,unsigned int *discharge_current_level);
int WINAPI BII_Get_Sensor_ParametersEx(int struct_revision, BII_Sensor_Param *sensor_parameters);
int WINAPI BII_Get_Template(unsigned int template_number, int template_index, BII_Template* the_template);
int WINAPI BII_Get_Template_Admin_List(TemplateAdminType *list, int option);
int WINAPI BII_Get_Template_List(unsigned int *template_list);
int WINAPI BII_Get_Template_Nx_Ny(BII_Template *the_template, int *nx, int *ny);
int WINAPI BII_Get_Template_Size(BII_Template *the_template);
int WINAPI BII_Get_Unit_Type(BII_Unit_Type *unit);
int WINAPI BII_Get_User_Interface(int *value);
int WINAPI BII_Get_V1100_Port();
int WINAPI BII_Get_Verify_Response_Port(BII_Verify_Response_Struct *value);
int WINAPI BII_Get_Wiegand(BII_Wiegand_Struct *value);
int WINAPI BII_Get_Wiegand_Id(unsigned int *Id, int timeout);
int WINAPI BII_Identify(unsigned int reserved_for_future, unsigned int *TemplateID, unsigned int *Index, unsigned int *Reserved, int *score, int async);
int WINAPI BII_Is_Finger_Present();
int WINAPI BII_Make_Enroll_WCard(int *WCard_id, int async);
int WINAPI BII_Make_Erase_WCard(int *WCard_id, int async);
int WINAPI BII_N_Commands_Pending();
int WINAPI BII_Open_PC_Comm(int commport);
int WINAPI BII_Program_Monitor(unsigned char *the_program, unsigned int n_data_bytes, int async);
int WINAPI BII_Purge_Port(int line);
int WINAPI BII_Reindex_Templates(int *value);
int WINAPI BII_Reset_Auto_Finger_Detect_State(int async);
int WINAPI BII_Reset_Global_Thresh(int async);
int WINAPI BII_Reset_Host_Port_Type(int async);
int WINAPI BII_Reset_LED_Table(int mode, int async);
int WINAPI BII_Reset_Port_Comm_Params(int port, int async);
int WINAPI BII_Reset_Port_Enable(int async);
int WINAPI BII_Reset_Sensor_Parameters(int save_flag, int async);
int WINAPI BII_Reset_User_Interface(int async);
int WINAPI BII_Reset_V1100_Comm_Parameters(int save_flag, int async);
int WINAPI BII_Reset_Verify_Response_Port(int async);
int WINAPI BII_Reset_Wiegand(int async);
int WINAPI BII_Reset_Wiegand_Locks(int async);
int WINAPI BII_Send_Flash_Block(unsigned int* buffer, int offset, int num_words, int async);
int WINAPI BII_Send_Index_Template(BII_Template *the_template, int option, int async);
int WINAPI BII_Send_Raw_Data(unsigned char *the_data, int nbytes, int ack, int req);
int WINAPI BII_Send_Raw_Image(BII_Raw *image, int async);
int WINAPI BII_Send_Template(BII_Template *the_template, int async);
int WINAPI BII_Sensor_Calibrate_Results(BII_Calibrate_Res *res_array, BII_Raw *optional_image);
int WINAPI BII_Set_Auto_Finger_Detect(unsigned int fdetect, int async);
int WINAPI BII_Set_Auto_Finger_Detect_State(BII_AUTO_FDETECT *fdetect_state, int async);
int WINAPI BII_Set_Current_NetID(int net_id);
int WINAPI BII_Set_Global_Thresh(int thresh, int async);
int WINAPI BII_Set_Host_Port_Type(int port_type, int async);
int WINAPI BII_Set_LED(int LEDSetting, int rate, int async);
int WINAPI BII_Set_LED_Table(BII_LED_Table *led_table, int async);
int WINAPI BII_Set_Net_ID(int net_id, int async);
int WINAPI BII_Set_PC_Baud_Rate(int baud_rate);
int WINAPI BII_Set_PC_Flow_Contol(BII_Flow_Control_Struct *flow_control);
int WINAPI BII_Set_Port_Comm_Params(int port, int baud_rate, int stop_bits, int async);
int WINAPI BII_Set_Port_Comm_ParamsEx(int port, int baud_rate, int stop_bits, BII_Flow_Control_Struct *flow_control, int async);
int WINAPI BII_Set_Port_Enable(BII_Port_Enable_Struct *value, int async);
int WINAPI BII_Set_Sensor_Parameters(unsigned int discharge_time_level,unsigned int discharge_current_level, int save_flag, int async);
int WINAPI BII_Set_Sensor_ParametersEx(int struct_revision, BII_Sensor_Param *sensor_parameters, int async);
int WINAPI BII_Set_User_Interface(int thresh, int async);
int WINAPI BII_Set_V1100_Comm_Parameters(int baud_rate, int stop_bits, int save_flag, int async);
int WINAPI BII_Set_V1100_Comm_ParametersEx(int baud_rate, int stop_bits, int save_flag, BII_Flow_Control_Struct *flow_control, int async);
int WINAPI BII_Set_Verify_Response_Port(BII_Verify_Response_Struct *value, int async);
int WINAPI BII_Set_Wiegand(BII_Wiegand_Struct value, int async);
int WINAPI BII_Set_Wiegand_Lock(int wiegand_format,int lock, unsigned int *key, int key_size, int async);
int WINAPI BII_Sleep(int sleep);
int WINAPI BII_Start_FPREnroll(unsigned int TemplateID, int async);
int WINAPI BII_Start_FPREnroll_Transfer(unsigned int TemplateID);
int WINAPI BII_Start_FPREnroll_Transfer_Search(unsigned int TemplateID);
int WINAPI BII_Start_FPRIdentify(unsigned int reserved_for_future, int async);
int WINAPI BII_Start_FPRVerify(unsigned int TemplateID, int async);
int WINAPI BII_Start_FPRVerify_Template(BII_Template *the_template, int async);
int WINAPI BII_Start_Sensor_Calibrate(int image_flag, int async);
int WINAPI BII_Status();
int WINAPI BII_Uncompress(unsigned char *inarray, unsigned char *outarray);
int WINAPI BII_Unpack(unsigned char *outarray, unsigned char *inarray, int nxout, int nyout, int nbits, int dirflag, unsigned char *qtable);
int WINAPI BII_Update_Template_Storage_Space(int async);
int WINAPI BII_Verify(unsigned int TemplateID, int *score, int num_templates, int async);
int WINAPI BII_Verify_Template(BII_Template *the_template, int *score, int async);
int WINAPI BII_Version(char *dll_version, char *algorithm_version, char *kernel_version);
int WINAPI BII_Reset_Variable_Wiegand(int async);
int WINAPI BII_Get_Variable_Wiegand(BII_Wiegand_Format *Var_Format);
int WINAPI BII_Set_Variable_Wiegand(BII_Wiegand_Format *Var_Format, int async);
int WINAPI BII_Convert_To_348(BII_Template *the_template);
int WINAPI BII_Get_Template_Name(unsigned int ID, unsigned int Index, char *template_name);
int WINAPI BII_Set_Wiegand_Enroll_ID(BII_Wiegand_ID_List *Wiegand_Enroll_ID, int async);
int WINAPI BII_Get_Wiegand_Enroll_ID(BII_Wiegand_ID_List *Wiegand_Enroll_ID);
int WINAPI BII_Clear_Wiegand_Enroll_ID(int async);
int WINAPI BII_Set_Wiegand_Delete_ID(BII_Wiegand_ID_List *Wiegand_Delete_ID, int async);
int WINAPI BII_Get_Wiegand_Delete_ID(BII_Wiegand_ID_List *Wiegand_Delete_ID);
int WINAPI BII_Clear_Wiegand_Delete_ID(int async);
int WINAPI BII_Set_Template_Security(unsigned int id, int index, int security_level, int async);
int WINAPI BII_Get_Template_Security(unsigned int id, int index, int *security_level);
int WINAPI BII_Reset_LED_Idle(int async);
int WINAPI BII_Get_Block_Template_List(unsigned int *template_list, int size_of_block, int block_number);
int WINAPI BII_Get_Block_Template_Admin_List(TemplateAdminType *template_list, int option, int size_of_block, int block_number);
int WINAPI BII_Upload_Uncompressed_Template(unsigned int id, int index, BII_Raw *image);
int WINAPI BII_Download_Uncompressed_Template(BII_Template *the_template, BII_Raw *image);

/* MV1200 commands */
int WINAPI BII_Get_GPI_States(BII_GPI_States *GPI_struct, int async);
int WINAPI BII_Set_Default_GPO_States(BII_Default_GPO_States GPO_Def_struct, int async);
int WINAPI BII_Get_Default_GPO_States(BII_Default_GPO_States *GPO_Def_struct, int async);
int WINAPI BII_Reset_Default_GPO_States(int async);
int WINAPI BII_Set_GPO_State(BII_GPO_State GPO_struct, int async);
int WINAPI BII_Get_GPO_States(BII_GPO_State_All *GPO_struct_All, int async);
int WINAPI BII_Get_Serial_Number(BII_GetSerialNumber_Struct *SerialNum, int async);
int WINAPI BII_Reset_GPO_State(BII_Reset_GPO_Struct GPO_Reset, int async);
int WINAPI BII_Get_Wiegand_String(unsigned int *WiegandString, unsigned int *NoWiegandBits, unsigned int *Id, int timeout);
int WINAPI BII_Get_Biometric_State(unsigned int *State,unsigned int *reserved_one, unsigned int *reserved_two, unsigned int *reserved_three, unsigned int *reserved_four, unsigned int *reserved_five);
int WINAPI BII_Set_Biometric_State(unsigned int State,unsigned int reserved_one, unsigned int reserved_two, unsigned int reserved_three, unsigned int reserved_four, unsigned int reserved_five,int async);
int WINAPI BII_Reset_Biometric_State(int async);
int WINAPI BII_Set_Receive_Templates_Timeout(int timeout, int reserved_one, int reserved_two, int async);
int WINAPI BII_Get_Receive_Templates_Timeout(int *timeout, int *reserved_one, int *reserved_two);
int WINAPI BII_Reset_Receive_Templates_Timeout(int async);
int WINAPI BII_Get_Verification_Entry(unsigned int reserved, BII_Verification_Queue_Entry *entry);
int WINAPI BII_Get_Verification_Queue(unsigned int reserved, unsigned char *queue);
int WINAPI BII_Erase_Verification_Queue(unsigned int reserved, int async);
int WINAPI BII_Set_Custom_Wiegand_Format(unsigned char *wiegandFile, int async);
int WINAPI BII_Get_Custom_Wiegand_Format(char *formatName);
int WINAPI BII_Upgrade_Firmware(unsigned char *the_program, unsigned int n_data_bytes, char *info, int async);
int WINAPI BII_Reset_Veri_Series_Ports(int async);
int WINAPI BII_Set_Veri_Series_Ports(int mode, int async);
int WINAPI BII_Get_Veri_Series_Ports(int *mode, int async);
int WINAPI BII_Get_Product_Type(Product_Type_Struct *data);
int WINAPI BII_Get_Finger_Detect_Timeout(int *timer);
int WINAPI BII_Set_Finger_Detect_Timeout(int timer, int async);
int WINAPI BII_Reset_Finger_Detect_Timeout(int async);
int WINAPI BII_Get_BioAPI_BIRHeader(BII_tagBio_API_BIR_Header *BioAPI_Header, int async);
int WINAPI BII_Set_Alt_Security_Behavior(unsigned int setting1,unsigned int setting2, unsigned int setting3, int async);
int WINAPI BII_Get_Alt_Security_Behavior(unsigned int *setting1,unsigned int *setting2, unsigned int *setting3);
int WINAPI BII_Reset_Alt_Security_Behavior(int async);
int WINAPI BII_Get_Extended_ID_From_ID (unsigned int templateID, unsigned char *extendedID);
int WINAPI BII_Get_ID_From_Extended_ID (unsigned char *extendedID);
int WINAPI BII_Get_Extended_Template_Admin_List(BII_Ext_Template_Admin_Struct *list, int option);
int WINAPI BII_Get_Extended_Wiegand_String(unsigned char *ExtendedWiegandString, unsigned int *NoWiegandBits, unsigned char *ExtendedId, int timeout);
int WINAPI BII_Get_Extended_Wiegand_Mode();
int WINAPI BII_Get_Error_String(int error, int reserved_one, char *errorString);
int WINAPI BII_Get_GPO_Table(BII_GPO_Table *GPOTable);
int WINAPI BII_Set_GPO_Table(BII_GPO_Table *GPOTable, int async);
int WINAPI BII_Reset_GPO_Table(int async);
int WINAPI BII_Get_GPO_Duration_Time();
int WINAPI BII_Set_GPO_Duration_Time(unsigned int duration, int async);
int WINAPI BII_Reset_GPO_Duration_Time(int async);
int WINAPI BII_Get_GPI_Table(BII_GPI_Table *GPITable);
int WINAPI BII_Set_GPI_Table(BII_GPI_Table *GPITable, int async);
int WINAPI BII_Reset_GPI_Table(int async);
int WINAPI BII_Get_GPI_Duration_Time();
int WINAPI BII_Set_GPI_Duration_Time(unsigned int duration, int async);
int WINAPI BII_Reset_GPI_Duration_Time(int async);
int WINAPI BII_Get_GPI_Active_Edge();
int WINAPI BII_Set_GPI_Active_Edge(unsigned int activeEdge, int async);
int WINAPI BII_Reset_GPI_Active_Edge(int async);
int WINAPI BII_Get_GPI_Double_Signal_Tolerance();
int WINAPI BII_Set_GPI_Double_Signal_Tolerance(unsigned int tolerance, int async);
int WINAPI BII_Reset_GPI_Double_Signal_Tolerance(int async);
int WINAPI BII_Get_GPI_ID_Settings(unsigned int *GPI_ID, unsigned int *GPImaxIndex);
int WINAPI BII_Set_GPI_ID_Settings(unsigned int GPI_ID, unsigned int GPImaxIndex, int async);
int WINAPI BII_Reset_GPI_ID_Settings(int async);
int WINAPI BII_Get_MV1200_Step_Upgrade_Result();
int WINAPI BII_Get_Password_Mode(unsigned int reserved);
int WINAPI BII_Set_Password_Mode(int mode, unsigned int reserved, int async);
int WINAPI BII_Reset_Password_Mode(int async);
int WINAPI BII_Get_MultiFinger_Params(unsigned int reserved, int *mode, int *timeout, unsigned int *reserved_out);
int WINAPI BII_Set_MultiFinger_Params(int mode, int timeout, unsigned int reserved, int async);
int WINAPI BII_Reset_MultiFinger_Params(int async);
int WINAPI BII_Get_Polling_Counter();
int WINAPI BII_Get_Polling_Data(char *buffer, unsigned int *counter);
int WINAPI BII_Clear_Polling_Data(int async);
int WINAPI BII_Set_Polling_Mode(unsigned int wiegandInput, unsigned int keypadInput, unsigned int reserved_one, unsigned int reserved_two, int async);
int WINAPI BII_Get_Polling_Mode(unsigned int *wiegandInput, unsigned int *keypadInput, unsigned int *reserved_one, unsigned int *reserved_two);
int WINAPI BII_Reset_Polling_Mode(int async);
int WINAPI BII_Get_Duress_Mode(unsigned int *mode, unsigned int *reserved);
int WINAPI BII_Set_Duress_Mode(unsigned int mode, unsigned int reserved, int async);
int WINAPI BII_Reset_Duress_Mode(int async);
int WINAPI BII_Get_Extended_Wiegand_StringEx(int timeout, unsigned char *ExtendedWiegandString, unsigned int *NoWiegandBits, unsigned char *ExtendedId, unsigned int *AlternateID);

/* ESI commands */
int WINAPI BII_ESI_Host_Mode();
int WINAPI BII_ESI_Host_ModeEx(int async);
int WINAPI BII_ESI_Status();
int WINAPI BII_ESI_Version(char *version);
int WINAPI BII_ESI_Send_Index_Template(unsigned char *primarykey, BII_Template *the_template, int option, int async);
int WINAPI BII_ESI_Get_Unit_Type(int *unit);
int WINAPI BII_ESI_Get_Template(unsigned char *primarykey, unsigned int template_number, int template_index, BII_Template* the_template);
int WINAPI BII_ESI_Erase_Templates(unsigned char *primarykey, int code, int async);
int WINAPI BII_ESI_Get_Max_NTemplates();
int WINAPI BII_ESI_Set_Max_NTemplates(int NumTemplates, int async);
int WINAPI BII_ESI_Get_Num_Templates();
int WINAPI BII_ESI_Get_Template_List(unsigned int *template_list);
int WINAPI BII_ESI_Get_Template_Admin_List(unsigned int *template_list);
int WINAPI BII_ESI_Get_Flash_Block(unsigned int* buffer, int block);
int WINAPI BII_ESI_Send_Flash_Block(unsigned char *primarykey, unsigned int* buffer, int block, int async);
int WINAPI BII_ESI_Check_Template(unsigned int id, int index);
int WINAPI BII_ESI_Is_SmartCard_Present();
int WINAPI BII_ESI_Get_Template_Name(unsigned int ID, unsigned int Index, char *template_name);
int WINAPI BII_ESI_Set_Template_Security(unsigned int id, int index, int security_level, int async);
int WINAPI BII_ESI_Get_Template_Security(unsigned int id, int index, int *security_level);
int WINAPI BII_Program_ESI_Controller(unsigned int port, unsigned char *programData, unsigned int nBytes, int async);
int WINAPI BII_ESI_Set_Smartcard_Password(unsigned char *oldprimary, unsigned char *newprimary, unsigned char *secondary, int async);
int WINAPI BII_ESI_Check_Smartcard_Password(unsigned char *tempkey, int async);
int WINAPI BII_ESI_Get_Smartcard_Layout(BII_Smartcard_Layout_Struct *SmartcardLayout, int async);
int WINAPI BII_ESI_Set_Smartcard_Layout(unsigned char *primarykey, BII_Smartcard_Layout_Struct SmartcardLayout, int async);
int WINAPI BII_ESI_Reset_Smartcard_Layout(unsigned char *primarykey, int async);
int WINAPI BII_ESI_Get_Wiegand_String(int templateNum, unsigned int *WiegandString);
int WINAPI BII_ESI_Set_Wiegand_String(int templateNum, unsigned char *primarykey, unsigned int *WiegandString, int async);
int WINAPI BII_ESI_Erase_Wiegand_String(int templateNum,unsigned char *primarykey,int async);
int WINAPI BII_ESI_Set_Store_Wiegand(int StoreWiegand, int async);
int WINAPI BII_ESI_Get_Store_Wiegand(int *StoreWiegand);
int WINAPI BII_ESI_Set_Verification_Timeout(int delay, int async);
int WINAPI BII_ESI_Get_Verification_Timeout();
int WINAPI BII_ESI_Unsecure_Smartcard(unsigned char *primarykey, int code, int async);
int WINAPI BII_ESI_Secure_Smartcard(int async);
int WINAPI BII_ESI_Get_SiteKey_Mode();
int WINAPI BII_ESI_Set_SiteKey_Mode(unsigned char *primarykey, int mode, int async);
int WINAPI BII_ESI_Update_Smartcard_Password_Mode4(unsigned char *PrimaryKey, unsigned char *NewReadKey,unsigned char *NewWriteKey, int async);
int WINAPI BII_ESI_Set_ReadOnly_Mode(unsigned char *PrimaryKey, int mode, int async);
int WINAPI BII_ESI_Get_ReadOnly_Mode();
int WINAPI BII_ESI_Reset_ReadOnly_Mode(unsigned char *PrimaryKey, int async);
int WINAPI BII_ESI_Set_Auto_SiteKey_Update(unsigned char *PrimaryKey, int mode, int async);
int WINAPI BII_ESI_Get_Auto_SiteKey_Update();
int WINAPI BII_ESI_Reset_Auto_SiteKey_Update(unsigned char *PrimaryKey, int async);
int WINAPI BII_ESI_Get_Smartcard_Manufacturer_Info(BII_Smartcard_Manufacturer_Info *info);

/* ESI iClass commands */
int WINAPI BII_ESI_IClass_Get_Flash_Block(unsigned char* buffer, int block);
int WINAPI BII_ESI_IClass_Send_Flash_Block(unsigned char *primarykey, unsigned char* buffer, int block, int async);
int WINAPI BII_ESI_IClass_Set_Page_Layout(unsigned char *primarykey, BII_IClass_Layout_Struct layout, int async);
int WINAPI BII_ESI_IClass_Get_Page_Layout(BII_IClass_Layout_Struct *layout);
int WINAPI BII_ESI_IClass_Reset_Page_Layout(unsigned char *primarykey, int async);
int WINAPI BII_ESI_IClass_Set_Page_Offset(unsigned char *primarykey, unsigned int offset, int async);
int WINAPI BII_ESI_IClass_Get_Page_Offset(unsigned int *offset);
int WINAPI BII_ESI_IClass_Reset_Page_Offset(unsigned char *primarykey, int async);
int WINAPI BII_ESI_IClass_Get_Smartcard_Info(unsigned int pageSelect, BII_IClass_Smartcard_Info *info);
int WINAPI BII_ESI_IClass_Get_Smartcard_InfoEx(unsigned int pageSelect, BII_IClass_Smartcard_Info *info);
int WINAPI BII_ESI_IClass_Get_Default_Smartcard_Key_Description(unsigned char *description);
int WINAPI BII_ESI_IClass_Set_Default_Smartcard_Key(unsigned char *primaryKey, unsigned char *keys, unsigned char *description, int async);
int WINAPI BII_ESI_IClass_Reset_Default_Smartcard_Key(unsigned char *primaryKey, int async);

/* Undocumented Research and Testing Routines */
int WINAPI BII_Verify_Test(unsigned int TemplateID, Candidate_info *cand_info, int async);
int WINAPI BII_Identify_Test(Candidate_info *cand_info, int async);
int WINAPI BII_Enroll_Test(unsigned int TemplateID, Template_info *temp_info, int async);
int WINAPI BII_Capture_Dn_Raw_Image(BII_Raw *image, int start_row, int start_col, int num_rows, int num_cols);
int WINAPI BII_Test_Wiegand_In(int test, int async);
int WINAPI BII_Get_Wiegand_Test_Res(unsigned int *result);
int WINAPI BII_Send_Wiegand_Out(unsigned short w_value, unsigned char site_code);

// TCP/IP functions
int WINAPI BII_Initialize_Socket_Communications();
int WINAPI BII_Open_TCPIP_Communications(char* host, unsigned short port);
int WINAPI BII_Close_TCPIP_Communications();
int WINAPI BII_Cleanup_Socket_Communications();
int WINAPI BII_Get_Current_TCP_Port();
int WINAPI BII_Get_Current_Host_Name(char **hostname);
int WINAPI BII_Set_Socket_Buffer_Size(int SendBuffer, int RecvBuffer);
int WINAPI BII_Get_Socket_Buffer_Size(int *SendBuffer, int *RecvBuffer);
int WINAPI BII_Get_Local_IP_Address(unsigned char* a1,unsigned char* a2,unsigned char* a3,unsigned char* a4);
int WINAPI BII_Is_Using_TCPIP();
int WINAPI BII_Get_Subnet_Mask(unsigned int *subnetMask);
int WINAPI BII_Set_Subnet_Mask(unsigned int subnetMask);	
int WINAPI BII_Set_Window_Handle(HWND handle);
int WINAPI BII_Set_TCP_Connection_Timeout(int timeout);
int WINAPI BII_Get_TCP_Connection_Timeout();
int WINAPI BII_Get_Product_Name_From_Type(int type, char *productName);
int WINAPI BII_Get_Product_Type_From_Name(char *productName);
int WINAPI BII_Get_TCP_NoDelay();
int WINAPI BII_Set_TCP_NoDelay(int noDelay);

// V-Station functions
int WINAPI BII_Erase_Transaction_Log(int option, int async);
int WINAPI BII_Read_Transaction_Log(int option, int updateFlag, int maxEntries, unsigned char *log);
int WINAPI BII_Get_Num_Transaction_Log(int option);
int WINAPI BII_Get_CM_Version(char *version);
int WINAPI BII_Get_Kit_Version(char *version);
int WINAPI BII_Get_Date_Time(BII_DateTime_Struct *dateTime);
int WINAPI BII_Set_Date_Time(BII_DateTime_Struct dateTime, int async);
int WINAPI BII_Set_Date_TimeEx(BII_DateTime_Struct *dateTime, int async);
int WINAPI BII_VS_Get_Key_Press(int timeout);
int WINAPI BII_VS_Test_LCD();
int WINAPI BII_VS_Get_MAC_Address(unsigned char *address);
int WINAPI BII_VS_Get_Date_Time_Settings(BII_DateTimeSettings_Struct *settings);
int WINAPI BII_VS_Set_Date_Time_Settings(BII_DateTimeSettings_Struct settings, int async);
int WINAPI BII_VS_Set_Date_Time_SettingsEx(BII_DateTimeSettings_Struct *settings, int async);
int WINAPI BII_VS_Reset_Date_Time_Settings(int async);
int WINAPI BII_VS_Show_LCD_Text(int displayTime, char *text, int async);
int WINAPI BII_VS_Get_IP_Address(unsigned int *address);
int WINAPI BII_VS_Set_IP_Address(unsigned int address, int async);
int WINAPI BII_VS_Get_DHCP_Mode();
int WINAPI BII_VS_Set_DHCP_Mode(int mode, int async);
int WINAPI BII_VS_Get_Current_IP_Address(unsigned int *address);
int WINAPI BII_VS_Set_Bio_Access_Schedule(unsigned int reserved, unsigned char *schedule, int async);
int WINAPI BII_VS_Get_Bio_Access_Schedule(unsigned int reserved, unsigned int *version, unsigned char *schedule);
int WINAPI BII_VS_Reset_Bio_Access_Schedule(int async);
int WINAPI BII_VS_Upload_Menu(unsigned int menuLocation, unsigned int reserved, unsigned char *menuFile, unsigned int menuFileSize, int async);
int WINAPI BII_VS_Set_Menu(unsigned int whichMenu, unsigned int reserved, int async);
int WINAPI BII_VS_Get_Menu_Info(unsigned int *numMenus, unsigned int *currentMenu, unsigned int *reserved);
int WINAPI BII_VS_Get_Menu_Name(unsigned int whichMenu, unsigned int *reserved, unsigned char *menuName);
int WINAPI BII_VS_Set_LCD_Settings(unsigned int contrast, unsigned int reserved_one, unsigned int reserved_two, int async);
int WINAPI BII_VS_Get_LCD_Settings(unsigned int *contrast, unsigned int *reserved_one, unsigned int *reserved_two);
int WINAPI BII_VS_Reset_LCD_Settings(int async);
int WINAPI BII_VS_Erase_Menu(unsigned int whichMenu, unsigned int reserved, int async);
int WINAPI BII_VS_Set_Access_Schedule_Settings(int enabled, int tolerance, unsigned int reserved, int async);
int WINAPI BII_VS_Get_Access_Schedule_Settings(int *enabled, int *tolerance, unsigned int *reserved);
int WINAPI BII_VS_Reset_Access_Schedule_Settings(int async);
int WINAPI BII_VS_Set_Access_Schedule(int scheduleIndex, unsigned char *scheduleData, int async);
int WINAPI BII_VS_Get_Access_Schedule(int scheduleIndex, unsigned char *scheduleData);
int WINAPI BII_VS_Reset_Access_Schedule(int scheduleIndex, int async);
int WINAPI BII_VS_Get_Num_Defined_Access_Schedules();
int WINAPI BII_VS_Get_Defined_Access_Schedule_List(unsigned int *definedScheduleList);
int WINAPI BII_VS_Set_Holiday_Schedule(int holidayIndex, BII_Holiday_Schedule_Struct *holidayData, int async);
int WINAPI BII_VS_Get_Holiday_Schedule(int holidayIndex, BII_Holiday_Schedule_Struct *holidayData);
int WINAPI BII_VS_Reset_Holiday_Schedule(int holidayIndex, int async);
int WINAPI BII_VS_Is_Template_Scheduled(unsigned int templateId, unsigned int templateIndex, unsigned char templateSchedule);


#ifdef __cplusplus
}
#endif

#endif
